const app = getApp()
// pages/search/main.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 导航栏信息
    navBar: {
      // 导航高度
      navHeight: 0,
      // 状态栏高度
      statusBarHeight: 0,
      // 标题栏高度
      titleBarHeight: 0,
      // 胶囊距状态栏的高度
      menuBtnTop: 0
    },
    // 输入框的值
    inputValue: '',
    // 控制清除按钮的显示与隐藏
    isFocus: false,
    // 搜索到的商品数据
    goods: [],
    // 历史搜索数据
    list: []
  },
  TimeId: -1,

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const windowHeight = wx.getSystemInfoSync().windowHeight
    this.windowHeight = windowHeight
    this.setData({
      navBar: {
        navHeight: app.globalData.navBar.navHeight,
        statusBarHeight: app.globalData.navBar.statusBarHeight,
        titleBarHeight: app.globalData.navBar.titleBarHeight,
        menuBtnTop: app.globalData.navBar.menuBtnTop
      }
    })

    // 获取本地历史搜索数据
    let _this = this
    wx.getStorage({
      key: 'searchHistory',
      success(res) {
        _this.setData({
          list: res.data
        })
      }
    })
  },

  // 输入框事件
  handleInput(e) {
    // 获取输入框的值
    const { value } = e.detail
    // 检测值的合法性
    if(!value.trim()) {
      this.setData({
        goods: [],
        isFocus: false
      })
      return
    } 
    this.setData({
      isFocus: true,
      inputValue: value
    })
    // 防抖
    clearTimeout(this.TimeId)
    this.TimeId = setTimeout(() => {
      // 发送请求
      this.getGoodsList(value)
      wx.hideLoading()
    }, 600)
  },
  
  async getGoodsList(value) {
    //连接数据库
    const db = wx.cloud.database()
    const { data: res } = await db.collection('goods').where({
      //使用正则查询，实现对搜索的模糊查询
      good_name: db.RegExp({
        //从搜索栏中获取的value作为规则进行匹配
        regexp: value,
        //大小写不区分
        options: 'i',
      })
    }).limit(10).get()
    this.setData({
      goods: res
    })
    if(this.data.goods.length === 0) {
      wx.showToast({
        title: '暂无相关商品',
        icon: 'none'
      })
    }
  },

  // 输入框清除事件
  handleClean() {
    let _this = this
    setTimeout(function() {
      _this.setData({
        inputValue: '',
        goods: [],
        isFocus: false
      })
    }, 100)
  },

  // 点击返回上一页面
  handleBack() {
    wx.navigateBack({
      delta: 1
    })
  },

  // 点击跳转到商品详情页面
  handleDetail(e) {
    this.save(e.currentTarget.dataset.searchname) 
    wx.navigateTo({
      url: '/pages/goods_list/main?cid=221'
    })
  },

  // 保存历史搜索记录
  save(name) {
    let list = this.data.list
    if (list.indexOf(name) == -1 & name != '') {
      list.push(name)
    }
    this.setData({ list })
    wx.setStorage({
      key: 'searchHistory',
      data: list
    })
  },

  // 清除历史记录
  remove() {
    let _this = this;
    wx.showModal({
      title: '提示',
      content: '确认清空所有记录?',
      success(res) {
        if (res.confirm) {
          wx.removeStorage({
            key: 'searchHistory',
            success() {
              _this.setData({
                list: []
              })
            }
          })
        } else if (res.cancel) {
          console.log('用户点击取消')
        }
      }
    })
  },

  // 点击历史搜索
  searchName(e) {
    let { value } = e.currentTarget.dataset
    this.setData({ 
      inputValue: value,
      isFocus: true
    })
    this.getGoodsList(value)
  }
})
